package com.ygu.Enter2.topic2_3合并有序链表;

//合并两个链表 原题1669
public class MergeInBetween {
    public ListNode mergeInBetween(ListNode list1, int a, int b, ListNode list2) {
        ListNode p1 = list1;
        ListNode p2 = list2;
        ListNode per = null ;
        ListNode suf = null;
        int pos = 0;

        //找到a的前面一个节点 和 找到b的后面一个节点
        while (p1 != null){
            if(pos == a-1){
                //找到a前面的一个节点
                per = p1;
            }
            if(pos == b){
                //找到b后面的一个节点
                suf = p1.next;
            }
            pos++;
            p1 = p1.next;
        }

        //找到之后 把list2的头结点指向per 尾节点suf
        per.next = list2;

        while (p2.next!=null){
            p2 = p2.next;
        }
        p2.next = suf;
        return list1;

    }

    public static class ListNode {
        int val;
        ListNode next;
        ListNode(int x) {
            val = x;
            next = null;
        }
    }
}
